iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
AI & Data

機器學習新手行,相信你也行!系列 第 3

冒險前準備~Python中的資料處理工具 —— NumPy

  • 分享至 

  • xImage
  •  

筆者今天沒那麼疲憊了,是活力星期一!內容雖然看起來和機器學習沒有關係,但是會和之後實作有關,雖然筆者也不確定會不會有實作就是了。今天最後會有一些小小的實作,是我熟悉語法小小題目(對我其實也不是很會),非常簡單,希望大家可以一起跟進!


是不是感覺前置準備有些多了呢?
但森導遊想先帶大家做好行前準備
不想在後面進入村子後
在衝衝忙忙跟不知道的人解釋
那接下來就進入今天的課程吧!

安裝 NumPy 、 Pandas 和 Matplotlib

在前面的天數中我們一起安裝了Anaconda
它會預先幫我們安裝一些常用的庫
包括今天要說的 NumPy 、 Pandas 和 Matplotlib
所以當我們用 Jupyter Notebook 的時後
它會自動用 Anaconda 環境中的這些庫

但在以後會有的情況下,需要確保特定版本的庫或需要在其他環境中使用這些庫,最好要自行使用 conda install (使用 Anaconda)或 pip install (直接用命令提示字元)來安裝。

一般來說,有些人會創建一個虛擬環境來安裝這些庫
但這邊就不多做說明

安裝特定版本的方式
再命令提示字元上打指令

pip install numpy == x.y.z #numpy的安裝
pip install pandas == x.y.z #pandas的安裝
pip install matplotlib == x.y.z #matplotlib的安裝

這邊的x.y.z就是要安裝的特定版本

而 conda 指令是打在 Anaconda prompt 上面

指令可以看 Anaconda numpyAnaconda pandasAnaconda matplotlib

NumPy(Numeric Python)

NumPy 是 Python 的一個擴充程式庫。支援高階大規模的多維陣列與矩陣運算,此外也針對陣列運算提供大量的數學函數函式庫。

NumPy 的特徵和用途

  • 多維陣列(Arrays):比Python的內置列表更有效率,並且可以包含相同類型的資料
  • 數學函數函式:有基本的數學運算、線性代數、統計學和傅立葉轉換等,使資料處理和科學計算更容易
  • 資料處理:NumPy陣列能夠進行快速資料操作,對資料清理和轉換很有幫助

Numpy 使用

這邊放一些 Numpy 用法

Numpy 匯入

import numpy as np

建立 Numpy 陣列

# 一維陣列
np.array([1, 2, 3], dtype = int)
arr = np.array([1, 2, 3])
# dtype 後是放數值格式 int、float、complex
#不放會自動判斷

# 二維陣列
np.array([[1, 2, 3], [4, 5, 6]], dtype = int)

# 全為 0 或 1 的陣列(一樣可以放 dtype)
np.zeros(3) #建立全是 0 的一維陣列
np.ones((3, 3)) #建立全是 1 的二維陣列

# 等差數列
np.arange(0, 10, 2) # 從 0 到 10 ,差為 2 
np.linspace(0, 10, 5) # 從 0 到 10 ,平分為 5 等分

# 隨機陣列
np.random.random(2, 2)
np.random.ranf(2, 2)
np.random.sample(2, 2)
# 0 到 1 之間的隨機數

np.random.normal(loc, scale, size)
# loc: 平均值 scale: 標準差 size: 陣列大小

random.randint(low, high, size)
# low: 最小值 high: 最大值 size: 陣列大小

維度、長度和大小

# 假設題目陣列為
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 陣列的維度數量(輸出為 3)
arr.ndim

# 陣列的元素數量(輸出為 6)
arr.size

# 陣列的形狀(輸出為(2, 3))
arr.shape

# 陣列的長度(輸出會是列數,為 2)
len(arr) # 假設 arr 是一維陣列 arr([1, 2, 3]),輸出為元素數量 3
# 下面中括號裡是第幾列,輸出為列裡面的元素數量,為 3)
len(arr[0])

索引和切片

# 索引
element = arr1[0]

# 切片
arr[1, 3] # 陣列第 1 列第 3 行位置的元素
arr[:, 3] # 陣列第 3 行的元素
arr[1, :] # 陣列第 1 列的元素
arr[r1:r2, c1:c2]
# r1:r2 取 r1 到 r2 列
# c1:c2 取 c1 到 c2 行
# :N 從 0 到 N - 1

統計

# 最小值和最大值
np.min(arr)
np.max(arr)

# 平均值、中位數、標準差
np.mean(arr)
np.median(arr)
np.std(arr)

篩選和條件

# 將陣列中所有元素的值調整到一個特定的範圍
np.clip(0, 5) # 只留下在 0 到 5 區間的元素

# 回傳陣列當中符合條件的元素索引值(位置)
np.where(arr > 2) # 放陣列和條件

上面這邊都可以自己試試看結果會怎麼樣喔~

NumPy 小實驗室

1.建一個 5 x 5 的 NumPy 整數陣列
2.計算上面陣列的平均值、最小值和最大值
3.建一個大小為 10 的一維零陣列,但第 5 個元素設為 1
4.建一個大小為 10 的一維陣列,但所有奇數位置的元素設為 0


今天的部分就到這裡
Pandas 和 Matplotlib 可能明天一起來或者分兩天
由於明天是可悲的早八
今天就不多說了~
各位明天見!

參考資料

https://zh.wikipedia.org/zh-tw/NumPy
https://hackmd.io/@yizhewang/BytGou11E?type=view
https://dysonma.github.io/2020/10/29/Numpy%E5%B8%B8%E7%94%A8%E8%AA%9E%E6%B3%95%E6%95%B4%E7%90%86/


上一篇
進入新手村~ Jupyter 和 Anaconda 安裝設置
下一篇
冒險前準備~Python中的資料處理工具 —— Pandas
系列文
機器學習新手行,相信你也行!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言